home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_DYDLX.ZIP / Daytona Deluxe.txt next >
Encoding:
Text File  |  1998-11-27  |  11.4 KB  |  245 lines

  1.  
  2. Free Information Xchange '98 presents:
  3.  
  4. Daytona USA Deluxe - CD crack by Static Vengeance
  5.  
  6. Requirements:
  7. Hex editor and full game install
  8. W32Dasm if you wish to follow along
  9.  
  10.     Daytona USA Deluxe is an updated version of Daytona USA.  Sega even has a Direct3D version you can
  11. download for improved graphics and speed.  Like the first version there is a CD check that needs to be FiX'ed.
  12. Using the regular method of Disassembling with W32Dasm from RUSoft and looking for useful Data String Refs
  13. will not work here.  You will not find any strings like "Please insert the Daytona.." or any other reference
  14. to the word "CD" or even the exe file name.  Instead we'll need to click the ref "%c:\"  Actually this is a
  15. commonly used ref in many CD checks.  I've seen either "%c:\" or "%a:\" used, so if you don't find any real
  16. obvious string refs try double clicking on "%c:\" to see where it'll lead you.  Anyways let's check out the
  17. routine to see what we can find:
  18.  
  19. * Referenced by a CALL at Address:
  20. |:004327FE                                                             <-- Called once
  21. |
  22. :00418AC5 55                      push ebp
  23. :00418AC6 8BEC                    mov ebp, esp
  24. :00418AC8 81EC10010000            sub esp, 00000110
  25. :00418ACE 53                      push ebx
  26. :00418ACF 56                      push esi
  27. :00418AD0 57                      push edi
  28. :00418AD1 C745FC00000000          mov [ebp-04], 00000000               <-- Preset for a failed read
  29. :00418AD8 837D0800                cmp dword ptr [ebp+08], 00000000
  30. :00418ADC 0F847A000000            je 00418B5C
  31.  
  32. * Reference To: KERNEL32.GetLogicalDrives, Ord:00FAh                   <-- Commonly used call in CD checks
  33.                                   |
  34. :00418AE2 FF15F0F58900            Call dword ptr [0089F5F0]
  35. :00418AE8 8945F4                  mov dword ptr [ebp-0C], eax
  36. :00418AEB C745F800000000          mov [ebp-08], 00000000               <-- Zero out times through CD check
  37. :00418AF2 E903000000              jmp 00418AFA
  38.  
  39. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  40. |:00418B50(U)
  41. |
  42. :00418AF7 FF45F8                  inc [ebp-08]                         <-- Ran through one time, add it up
  43.  
  44. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  45. |:00418AF2(U)
  46. |
  47. :00418AFA 837DF820                cmp dword ptr [ebp-08], 00000020     <-- Try 32 times
  48. :00418AFE 0F8D51000000            jnl 00418B55                         <-- Over 32 times, then out
  49. :00418B04 B801000000              mov eax, 00000001
  50. :00418B09 8A4DF8                  mov cl, byte ptr [ebp-08]
  51. :00418B0C D3E0                    shl eax, cl
  52. :00418B0E 8545F4                  test dword ptr [ebp-0C], eax
  53. :00418B11 0F8439000000            je 00418B50
  54. :00418B17 8B45F8                  mov eax, dword ptr [ebp-08]
  55. :00418B1A 83C041                  add eax, 00000041
  56. :00418B1D 50                      push eax
  57.  
  58. * Possible StringData Ref from Data Obj ->"%c:\"                     <-- Common ref in CD check routines
  59.                                   |
  60. :00418B1E 6840B74B00              push 004BB740
  61. :00418B23 8D85F0FEFFFF            lea eax, dword ptr [ebp+FFFFFEF0]
  62. :00418B29 50                      push eax
  63. :00418B2A E801F30800              call 004A7E30
  64. :00418B2F 83C40C                  add esp, 0000000C
  65. :00418B32 8B450C                  mov eax, dword ptr [ebp+0C]
  66. :00418B35 50                      push eax
  67. :00418B36 8D85F0FEFFFF            lea eax, dword ptr [ebp+FFFFFEF0]
  68. :00418B3C 50                      push eax
  69. :00418B3D FF5508                  call [ebp+08]
  70. :00418B40 83C408                  add esp, 00000008
  71. :00418B43 85C0                    test eax, eax
  72. :00418B45 0F8505000000            jne 00418B50
  73. :00418B4B E905000000              jmp 00418B55
  74.  
  75. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  76. |:00418B11(C), :00418B45(C)
  77. |
  78. :00418B50 E9A2FFFFFF              jmp 00418AF7
  79.  
  80. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  81. |:00418AFE(C), :00418B4B(U)
  82. |
  83. :00418B55 C745FC01000000          mov [ebp-04], 00000001              <-- Store a pass value
  84.  
  85. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  86. |:00418ADC(C)
  87. |
  88. :00418B5C 8B45FC                  mov eax, dword ptr [ebp-04]         <-- Load eax with pass/fail flag
  89. :00418B5F E900000000              jmp 00418B64
  90.  
  91. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  92. |:00418B5F(U)
  93. |
  94. :00418B64 5F                      pop edi
  95. :00418B65 5E                      pop esi
  96. :00418B66 5B                      pop ebx
  97. :00418B67 C9                      leave
  98. :00418B68 C3                      ret
  99.  
  100.     That's the first section that deals with the CD.  So we'll also need to check the secondary
  101. routine that calls this code.  The call is made from 4327FE and the routine starts at 43273D.  Let's
  102. check out that section of code to see what else we can find out:
  103.  
  104. * Referenced by a CALL at Addresses:
  105. |:0040C4A5   , :00426AF6   , :0043AEA3   , :0044EB33           <-- Called four different times
  106. |
  107. :0043273D 55                      push ebp
  108. :0043273E 8BEC                    mov ebp, esp
  109. :00432740 81EC58040000            sub esp, 00000458
  110. :00432746 53                      push ebx
  111. :00432747 56                      push esi
  112. :00432748 57                      push edi
  113. :00432749 C745FC00000000          mov [ebp-04], 00000000           <-- Preset flag for failed CD check
  114. :00432750 837D0800                cmp dword ptr [ebp+08], 00000000
  115. :00432754 0F84DD000000            je 00432837
  116. :0043275A 837D1000                cmp dword ptr [ebp+10], 00000000
  117. :0043275E 0F8550000000            jne 004327B4
  118. :00432764 8D85BCFEFFFF            lea eax, dword ptr [ebp+FFFFFEBC]
  119. :0043276A 50                      push eax
  120. :0043276B 8B4508                  mov eax, dword ptr [ebp+08]
  121. :0043276E 50                      push eax
  122.  
  123. * Reference To: KERNEL32.FindFirstFileA, Ord:0082h
  124.                                   |
  125. :0043276F FF15C8F58900            Call dword ptr [0089F5C8]
  126. :00432775 8985B8FEFFFF            mov dword ptr [ebp+FFFFFEB8], eax
  127. :0043277B 83BDB8FEFFFFFF          cmp dword ptr [ebp+FFFFFEB8], FFFFFFFF
  128. :00432782 0F842C000000            je 004327B4
  129. :00432788 8B85B8FEFFFF            mov eax, dword ptr [ebp+FFFFFEB8]
  130. :0043278E 50                      push eax
  131.  
  132. * Reference To: KERNEL32.FindClose, Ord:007Eh
  133.                                   |
  134. :0043278F FF15C0F58900            Call dword ptr [0089F5C0]
  135. :00432795 837D0C00                cmp dword ptr [ebp+0C], 00000000
  136. :00432799 0F840E000000            je 004327AD                         <-- Take this jump if things are okay
  137. :0043279F 8B4508                  mov eax, dword ptr [ebp+08]
  138. :004327A2 50                      push eax
  139. :004327A3 8B450C                  mov eax, dword ptr [ebp+0C]
  140. :004327A6 50                      push eax
  141.  
  142. * Reference To: KERNEL32.lstrcpyA, Ord:029Bh
  143.                                   |
  144. :004327A7 FF1568F68900            Call dword ptr [0089F668]
  145.  
  146. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  147. |:00432799(C)
  148. |
  149. :004327AD C745FC01000000          mov [ebp-04], 00000001               <-- Set flag for pass
  150.  
  151. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  152. |:0043275E(C), :00432782(C)
  153. |
  154. :004327B4 837DFC00                cmp dword ptr [ebp-04], 00000000     <-- Check against fail value
  155. :004327B8 0F8579000000            jne 00432837                         <-- Take this jump for a passed CD check
  156. :004327BE C785A8FBFFFF05000000    mov dword ptr [ebp+FFFFFBA8], 00000005
  157.  
  158. * Possible StringData Ref from Data Obj ->"Game\"                      <-- Partial path from the CD
  159.                                   |
  160. :004327C8 68D03D4C00              push 004C3DD0
  161. :004327CD 8D85ACFBFFFF            lea eax, dword ptr [ebp+FFFFFBAC]
  162. :004327D3 50                      push eax
  163.  
  164. * Reference To: KERNEL32.lstrcpyA, Ord:029Bh
  165.                                   |
  166. :004327D4 FF1568F68900            Call dword ptr [0089F668]
  167. :004327DA 8B4508                  mov eax, dword ptr [ebp+08]
  168. :004327DD 50                      push eax
  169. :004327DE 8D85B0FCFFFF            lea eax, dword ptr [ebp+FFFFFCB0]
  170. :004327E4 50                      push eax
  171.  
  172. * Reference To: KERNEL32.lstrcpyA, Ord:029Bh
  173.                                   |
  174. :004327E5 FF1568F68900            Call dword ptr [0089F668]
  175. :004327EB C685B4FDFFFF00          mov byte ptr [ebp+FFFFFDB4], 00
  176. :004327F2 8D85A8FBFFFF            lea eax, dword ptr [ebp+FFFFFBA8]
  177. :004327F8 50                      push eax
  178. :004327F9 6844284300              push 00432844
  179. :004327FE E8C262FEFF              call 00418AC5                      <-- Calls the code listed above
  180. :00432803 83C408                  add esp, 00000008
  181. :00432806 0FBE85B4FDFFFF          movsx eax, byte ptr [ebp+FFFFFDB4]
  182. :0043280D 85C0                    test eax, eax
  183. :0043280F 0F8422000000            je 00432837
  184. :00432815 837D0C00                cmp dword ptr [ebp+0C], 00000000
  185. :00432819 0F8411000000            je 00432830
  186. :0043281F 8D85B4FDFFFF            lea eax, dword ptr [ebp+FFFFFDB4]
  187. :00432825 50                      push eax
  188. :00432826 8B450C                  mov eax, dword ptr [ebp+0C]
  189. :00432829 50                      push eax
  190.  
  191. * Reference To: KERNEL32.lstrcpyA, Ord:029Bh
  192.                                   |
  193. :0043282A FF1568F68900            Call dword ptr [0089F668]
  194.  
  195. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  196. |:00432819(C)
  197. |
  198. :00432830 C745FC01000000          mov [ebp-04], 00000001         <-- Set flag to CD check passed
  199.  
  200. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  201. |:00432754(C), :004327B8(C), :0043280F(C)
  202. |
  203. :00432837 8B45FC                  mov eax, dword ptr [ebp-04]    <-- Load pass/fail value
  204. :0043283A E900000000              jmp 0043283F
  205.  
  206. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  207. |:0043283A(U)
  208. |
  209. :0043283F 5F                      pop edi
  210. :00432840 5E                      pop esi
  211. :00432841 5B                      pop ebx
  212. :00432842 C9                      leave
  213. :00432843 C3                      ret                       <-- Finally return to the caller
  214.  
  215.     There is one catch with this routine, it MUST be run for the Daytona USA Deluxe to function
  216. properly.  It seems to run through this section of code when closing files after accessing them.
  217.     Alright, the "best" way I can think of to bypass this CD check routine is to force the program
  218. to store 00000001 in the flag location instead of storing a "fail" value.  This is simple enough to do,
  219. just edit both locations from 00 to 01.  With this edit the game will continue on as though the CD was
  220. found.  This same type of edit will work for the CD version, the D3D version and the international version
  221. known as Daytona USA Evolution.  Make the edits by version:
  222.  
  223. 1.  Do a full install of the game
  224. 2.  Make the right edit for your version
  225.  
  226. File from the CD edit Daytona USA Deluxe.exe
  227. make same edit at both locations
  228. at offset 60,665 & 156,865
  229. ======================================
  230. Search for: C7 45 FC 00 00 00 00
  231. Change to : -- -- -- 01 -- -- --
  232.  
  233.  
  234. For the D3D patch edit Daytona USA Deluxe.exe
  235. make same edit at both locations
  236. same edits work for the "Daytona USA Evolution"
  237. at offset 98,001 & 203,593
  238. ======================================
  239. Search for: C7 45 FC 00 00 00 00
  240. Change to : -- -- -- 01 -- -- --
  241.  
  242.     Enjoy racing around Daytona USA without the CD online, becuase Daytona USA Deluxe has been FiX'ed.
  243.  
  244. Static Vengeance
  245.